home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / asmexam.arc / ODDS.ASM < prev    next >
Assembly Source File  |  1984-03-17  |  1KB  |  65 lines

  1.     PAGE 55,132
  2.  
  3. DATA    SEGMENT PARA
  4. VAR1    DW  4
  5. VAR2    DB  5
  6. RES     DW ?
  7. DATA    ENDS
  8.  
  9. STACK   SEGMENT STACK
  10.     DW 10 DUP(?)
  11. STACK   ENDS
  12.  
  13.  
  14. CODE    SEGMENT PARA
  15.     ASSUME CS:CODE,DS:DATA,SS:STACK
  16.  
  17.     ORG 100H
  18.  
  19. START:  MOV AX,VAR1    ; DATA MOVED FROM DATA SEGMENT TO REGISTER
  20.     PUSH AX        ; CONTENTS MOVED TO STACK
  21.     PUSH DS        ; PUSH DATA SEGMENT ADDRESS TO STACK
  22.     PUSHF          ; PUSH FLAG REGISTER ON STACK
  23.  
  24.     SUB AX,4       ; ALTER FLAGS
  25.     POPF           ; POP OUT OLD FLAGS
  26.  
  27.     MOV DS,CX      ; CHANGE DS VALUE
  28.     POP DS         ; RESTORE OLD VALUE
  29.  
  30.     POP AX         ; POP VAR1 BACK TO AX
  31.  
  32.     CALL ODDENDS
  33.  
  34.     MOV  AL,VAR2
  35.     PUSH DS
  36.     CALL TRANSLATE
  37.     POP   DS
  38.     NOP
  39.  
  40. ODDENDS  PROC   NEAR
  41.  
  42.        XCHG   BX,AX      ; XCHANGE AX <---> BX
  43.        STC               ; SET CARRY
  44.        CLD               ; CLEAR DIRECTION
  45.        CLI               ; CLEAR INTERRUPT
  46.        LAHF              ; LOAD FLAGS INTO AH
  47.        RET
  48. ODDENDS  ENDP
  49.  
  50. TRANSLATE  PROC NEAR
  51. ;          ASSUME AL CONTAINS CODE READ IN
  52.  
  53.        LDS  BX,CS:TAB_POINTER
  54.        XLAT CS:XMIT_TABLE      ;M(BX+AL) --> AL
  55.        RET
  56.  
  57. TAB_POINTER DD  XMIT_TABLE
  58. XMIT_TABLE  DB  '5791368024'
  59.  
  60. TRANSLATE   ENDP
  61.  
  62. CODE        ENDS
  63.         END START
  64.  
  65.